﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Web.Mvc;
using Tecnosop.Dominio;

namespace Tecnosop.WebUI.Models
{
    //public class GuiaDespachoViewModel
    //{
    //}
    public class createGuiaDespachoStep1
    {

        //[HiddenInput(DisplayValue = true)]
        [DisplayName("ID guía despacho")]
        [Required(ErrorMessage = "Ingrese ID de guía")]
        [Remote("ValidaNumeroGuiaUnico", "GuiaDespacho", AdditionalFields = "EsRazonSocialTecnosopGuia"/*, ErrorMessage = "El número de factura ingresado ya fue ocupado para otra factura."*/)]
        public int ID_GUIA_DE_DESPACHO_ { get; set; }


        [DisplayName("Razón social")]
        [Required(ErrorMessage = "Ingrese una {0}")]
        public bool? EsRazonSocialTecnosopGuia { get; set; }


        //[HiddenInput(DisplayValue = true)]
        //[Required(ErrorMessage = "Ingrese el número de la factura")]
        [DisplayName("Número de factura")]
        [Remote("ValidaNumeroFacturaExiste", "GuiaDespacho", AdditionalFields = "EsRazonSocialTecnosop"/*, ErrorMessage = "El número de factura ingresado ya fue ocupado para otra factura."*/)]
        public Nullable<int> NUMERO_FACTURA { get; set; }

        [DisplayName("Razón social factura")]
        //[Required(ErrorMessage = "Ingrese una {0}")]
        public  bool?  EsRazonSocialTecnosop { get; set; }

       

        [DataType(DataType.MultilineText)]
        [DisplayName("Comentario")]
        public string COMENTARIO { get; set; }

        [DisplayName("Fecha")]
        [Required(ErrorMessage = "Ingrese fecha")]
        public Nullable<System.DateTime> FECHA_INSTALACION { get; set; }

        [DisplayName("Dirección despacho")]
        [Required(ErrorMessage = "Ingrese dirección")]
        public string DIRECCION_DE_DESPACHO { get; set; }

        [DisplayName("Región")]
        [Required(ErrorMessage = "Seleccione una región")]
        public string REGION { get; set; }

        [DisplayName("Comuna")]
        [Required(ErrorMessage = "Ingrese una comuna")]
        public string COMUNA { get; set; }

        [DisplayName("Ciudad")]
        [Required(ErrorMessage = "Ingrese una cuidad")]
        public string CIUDAD { get; set; }


        [DisplayName("Número convenio")]
        public Nullable<int> NUMERO_CONVENIO { get; set; }

        public CLIENTE Cliente { get; set; }        
        
        [DisplayName("Razón social")]
        public string RAZON_SOCIAL { get; set; }

        [DisplayName("Razón social")]
        public string RAZON_SOCIALGuia { get; set; }

        [DisplayName("Nula")]
        [ScaffoldColumn(false)]
        public Nullable<bool> VISIBLE { get; set; }
        public IEnumerable<DetalleGuiaDespachoViewModel> DETALLE_GUIA_DESPACHOvm { get; set; }
    }


     public class DetalleGuiaDespachoViewModel
	{
       
        public DetalleGuiaDespachoViewModel()
        {
            this.CODIGO_ITEM = 0;
            this.CANTIDAD = 1;
        }

        public int valorUnitario { get; set; }

        public int ID_GUIA_DE_DESPACHO { get; set; }

        [HiddenInput(DisplayValue = false)]
        public int NUMERO_LINEA_DETALLE { get; set; }

        [DisplayName("Código ítem")]
        [Remote("ValidaNumeroItem", "FacturaVentaDirecta", ErrorMessage = "El número del ítem ingresado no existe en la base de datos")]
        public int CODIGO_ITEM { get; set; }

        [HiddenInput(DisplayValue = true)]
        [DisplayName("Descripción")]
        public string DESCRIPCION_ITEM { get; set; }

        public void setDescripcion(string TipoItem, string MARCA, string MODELO)
        {
            this.DESCRIPCION_ITEM = TipoItem + " " + MARCA + " " + MODELO;
        }
       

        [UIHint("Numero")]
        [DisplayName("Cantidad")]
        [Range(1, Int32.MaxValue, ErrorMessage = "Ingrese un valor entre {0} y {1}")]
        public int CANTIDAD { get; set; }
        
       
	}
}
